package com.jshealthWEB.util;

import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

import org.primefaces.model.LazyDataModel;
import org.primefaces.model.SortOrder;

import com.jshealthEJB.bean.UsuarioBeanLocal;
import com.jshealthEJB.entidades.UsuarioIPS;

public class UsuarioIPSDataModel extends LazyDataModel<UsuarioIPS> {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private UsuarioBeanLocal usuarioBean;

	private List<UsuarioIPS> usuarios;

	public UsuarioIPSDataModel(UsuarioBeanLocal usuarioBean) {

		this.usuarioBean = usuarioBean;

		load(0, 10, "primerNombre", SortOrder.ASCENDING, null);
	}

	@Override
	public List<UsuarioIPS> load(int startingAt, int maxPerPage,
			String sortField, SortOrder sortOrder, Map<String, Object> filters) {
		try {

			// with datatable pagination limits
			usuarios = usuarioBean.consultarUsuariosPag(startingAt, maxPerPage);

			// If there is no player created yet, we will create 100!!
			if (usuarios == null || usuarios.isEmpty()) {
				FacesContext context = FacesContext.getCurrentInstance();
				ResourceBundle bundle = context.getApplication()
						.getResourceBundle(context, "messages");
				String mensaje = bundle
						.getString("label.noSeEncontroResultado");
				context.addMessage(null, new FacesMessage(
						FacesMessage.SEVERITY_INFO, null, mensaje));
			}

		} catch (Exception e) {
			e.printStackTrace();
		}

		// set the total of players
		if (getRowCount() <= 0) {
			setRowCount(usuarioBean.countUsuariosTotal());
		}

		// set the page dize
		setPageSize(maxPerPage);

		return usuarios;

	}

	@Override
	public Object getRowKey(UsuarioIPS usuario) {
		return usuario.getIdUsuarioIPS();
	}

	@Override
	public UsuarioIPS getRowData(String usuarioId) {
		Integer id = Integer.valueOf(usuarioId);
		for (UsuarioIPS usuario : usuarios) {
			if (id.equals(usuario.getIdUsuarioIPS())) {
				return usuario;
			}
		}

		return null;
	}

}
